home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / share / pyshared / PIL / MicImagePlugin.py < prev    next >
Text File  |  2006-12-03  |  2KB  |  97 lines

  1. #
  2. # The Python Imaging Library.
  3. # $Id: MicImagePlugin.py 2134 2004-10-06 08:55:20Z fredrik $
  4. #
  5. # Microsoft Image Composer support for PIL
  6. #
  7. # Notes:
  8. #       uses TiffImagePlugin.py to read the actual image streams
  9. #
  10. # History:
  11. #       97-01-20 fl     Created
  12. #
  13. # Copyright (c) Secret Labs AB 1997.
  14. # Copyright (c) Fredrik Lundh 1997.
  15. #
  16. # See the README file for information on usage and redistribution.
  17. #
  18.  
  19.  
  20. __version__ = "0.1"
  21.  
  22. import string
  23.  
  24. import Image, TiffImagePlugin
  25. from OleFileIO import *
  26.  
  27.  
  28. #
  29. # --------------------------------------------------------------------
  30.  
  31.  
  32. def _accept(prefix):
  33.     return prefix[:8] == MAGIC
  34.  
  35. ##
  36. # Image plugin for Microsoft's Image Composer file format.
  37.  
  38. class MicImageFile(TiffImagePlugin.TiffImageFile):
  39.  
  40.     format = "MIC"
  41.     format_description = "Microsoft Image Composer"
  42.  
  43.     def _open(self):
  44.  
  45.         # read the OLE directory and see if this is a likely
  46.         # to be a Microsoft Image Composer file
  47.  
  48.         try:
  49.             self.ole = OleFileIO(self.fp)
  50.         except IOError:
  51.             raise SyntaxError, "not an MIC file; invalid OLE file"
  52.  
  53.         # find ACI subfiles with Image members (maybe not the
  54.         # best way to identify MIC files, but what the... ;-)
  55.  
  56.         self.images = []
  57.         for file in self.ole.listdir():
  58.             if file[1:] and file[0][-4:] == ".ACI" and file[1] == "Image":
  59.                 self.images.append(file)
  60.  
  61.         # if we didn't find any images, this is probably not
  62.         # an MIC file.
  63.         if not self.images:
  64.             raise SyntaxError, "not an MIC file; no image entries"
  65.  
  66.         self.__fp = self.fp
  67.         self.frame = 0
  68.  
  69.         if len(self.images) > 1:
  70.             self.category = Image.CONTAINER
  71.  
  72.         self.seek(0)
  73.  
  74.     def seek(self, frame):
  75.  
  76.         try:
  77.             filename = self.images[frame]
  78.         except IndexError:
  79.             raise EOFError, "no such frame"
  80.  
  81.         self.fp = self.ole.openstream(filename)
  82.  
  83.         TiffImagePlugin.TiffImageFile._open(self)
  84.  
  85.         self.frame = frame
  86.  
  87.     def tell(self):
  88.  
  89.         return self.frame
  90.  
  91. #
  92. # --------------------------------------------------------------------
  93.  
  94. Image.register_open("MIC", MicImageFile, _accept)
  95.  
  96. Image.register_extension("MIC", ".mic")
  97.